//https://sm.ms/doc/
/*
* 功能	上传图片接口
*HTTP 请求方式	POST
*URL	https://sm.ms/api/upload
* */
//needle 模块


//  先简单的描述下http协议分包传输时的数据格式。
//  Content-type需要指定为
//  multipart/form-data; boundary= ' + boundaryKey
//  其中boundaryKey为一随机字符串，用于标识请求数据段。
//  请求体格式
//  每一段请求体均以"–" + boundaryKey开头，然后使用 '\r\n '来做行分隔。
//  接下来是每一段请求体的描述信息，包括Content-Type以及<pre><code>Content-Disposition</pre></code>等字段信息。每一个字段信息结尾都以 '\r\n '来标识行结束。
//  描述信息与请求体正文需要以一个空行隔开，即需要再输出一个 '\r\n '。
//  最后是请求提正文。
//  直到最后一个请求体结束之后，再输出 '\r\n– ' + boundaryKey +  '– '作为整个请求的结束。
//  这样即完成了一次post请求所需的基本内容了。
//  接下来，在介绍下，将文件转换为http数据流所需要做的工作。
//  转换的基本过程：
//  	调用http.request方法，返回一个<pre><code>http.ClientRequest类的实例</pre></code>。<pre><code>http.ClientRequest的实例本质上来说是一个</pre></code>writable stream。</li>
//  	对要上传的文件创建一个读取文件流。
//  	将从文件读取到的流数据写到http请求数据流中。
//  	关闭http请求。
//  所需要用到的接口：
//  	http.request
//  	createReadStream
//  	stream.pipe
//  	stream.on( 'end ')事件
let querystring = require('querystring');
let postData = querystring.stringify({
    "type":"1",
    "mobile":"152****7990",
    "category":"r"
});
    const fs = require('fs');
    const https = require('http');
    let filename = '1.jpg';
    let boundaryKey = Math.random().toString(16);
    let opt = {
        host:'cozia.free.ngrok.cc',
        method:'post',
        // path:'/api/upload?inajax=1&ssl=1',
        path:'/upload',
        headers:{
            // 'Content-Type':`multipart/form-data;boundary=${boundaryKey}`,
            // 'Content-Length':'80263'
        }
    };
    const req = https.request(opt, res=>{
        res.on('data', chunk=>{
            console.log(chunk.toString());
        });
        res.on('end', ()=>{
            console.log('end');
        })
    });
    req.write(postData);
    req.end();
    // let payload = '--' + boundaryKey + '\r\n'
    // + 'Content-Type: image/jpeg\r\n'
    // + 'Content-Disposition: form-data; name="smfile"; filename="1.jpg"\r\n'
    // + 'Content-Transfer-Encoding: binary\r\n\r\n';
    // req.write(payload);
    // // req.write(`--${boundaryKey}\nContent-Disposition:form-data;name="smfile";filename="${filename}"\nContent-Type:image/jpeg\nContent-Transfer-Encoding: binary\n`);
    // let fileStream = fs.createReadStream('../../dist/1.jpg');
    // fileStream.pipe(req, {end:false});
    // fileStream.on('end',()=>{
    //     req.end(`--${boundaryKey}--\r\n\r\n`);
    // });


